<?php
// src/Sdz/BlogBundle/Command/FixtureCategoriesCommand.php[0]

namespace D3hdv\Diablo3Bundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument; 
use D3hdv\Diablo3Bundle\Entity\D3ObjetModele;
use D3hdv\Diablo3Bundle\Entity\D3ObjetCaracValeur;
use D3hdv\Diablo3Bundle\Entity\D3ObjetCarac;



class FixtureObjetsModeleCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('D3hdvDiablo3:fixture:ObjetsModele');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // On récupère l'EntityManager
    $em = $this->getContainer()->get('doctrine.orm.entity_manager');

	$fichier = __DIR__.'/source/test.csv';
	if(file_exists($fichier)) 
{ 
	$output->writeln('le fichier existe');
	$handle = fopen ($fichier,"r" ); 
	$i=0;
  while ($lignes=fgets($handle)) 
  { 	
      list($nom,$niveau,$Image,$Spe, $Type, $Classe, $Rarete)=explode(";", $lignes);
	
	//securité
	$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3ObjetModele');

	    // On récupère l'entité correspondant à l'id $id
	   $correspondanceObjetModele = $repository->findByNom($nom);

	   if(!empty($correspondanceObjetModele)) // si objet modéle existe déja on ne l'ajoute pas ;D
	   {
		 $output->writeln('Objet Modele déjà existant => Nom : '.$nom);
	   }
	   else // Sinon on l'ajoute
           {
		$HdvObjetsModele[$i]= new D3ObjetModele();		
		$HdvObjetsModele[$i]->SetNom($nom);
		$HdvObjetsModele[$i]->SetNiveau($niveau);
		$HdvObjetsModele[$i]->SetImage($Image);
		$HdvObjetsModele[$i]->SetSpe($Spe);
	
		$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3ObjetType');
		$Type = $repository->findById($Type);
	
		$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3ObjetClasse');
		$Classe = $repository->findById($Classe);
	
		$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3ObjetRarete');
		$Rarete = $repository->findById($Rarete);
	 	
		$HdvObjetsModele[$i]->setType($Type[0]); //c'est l'objet type
		$HdvObjetsModele[$i]->setClasse($Classe[0]); 	//c'est l'objet classe
		$HdvObjetsModele[$i]->setRarete($Rarete[0]); //c'est l'objet rarete
	
		$j=0;
		$minSpe=0;
		$maxSpe=0;
		$carac=0;
		if(($HdvObjetsModele[$i]->GetRarete()->GetId())==3)//magique
		{
			$output->writeln('Superieur');
			$j=rand(1,2);
			$minSpe1=10;
			$minSpe2=30;
			$maxSpe1=30;
			$maxSpe2=45;
			$carac=1;
	
		}
		if(($HdvObjetsModele[$i]->GetRarete()->GetId())==4)//superieur
		{
			$output->writeln('Magique');
			$j=rand(2,3);
			$minSpe1=45;
			$minSpe2=80;
			$maxSpe1=80;
			$maxSpe2=95;

			$carac=1;
		}
		if(($HdvObjetsModele[$i]->GetRarete()->GetId())==5)//legendaire
		{
			$output->writeln('Legendaire');
			$j=rand(3,4);
			$minSpe1=95;
			$minSpe2=200;
			$maxSpe1=200;
			$maxSpe2=300;
			$minSpe=rand(95,200);

			$carac=1;
		}
	
		if($carac==1)
		{
			for($v=0;$v<$j;$v++)
			{
				
				$D3ObjetsCarac= $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3ObjetCarac')->findAll();
				
				$indexD3ObjetCarac=array_rand($D3ObjetsCarac);
				$liste_caracteristique[$j]= new D3ObjetCaracValeur();
				$liste_caracteristique[$j]->setValeurCara(rand($minSpe1,$minSpe2)."-".rand($maxSpe1,$maxSpe2));
				$liste_caracteristique[$j]->setObjetCaracteristique($D3ObjetsCarac[$indexD3ObjetCarac]);
				$HdvObjetsModele[$i]->addCaracteristique($liste_caracteristique[$j]);
			
				$em->persist($liste_caracteristique[$j]);
			}
			
		}
		
		$em->persist($HdvObjetsModele[$i]);
	
		$output->writeln('Enregistrement de l\'objet '.$nom.' modele numero '.$i);
		
           }

	
	
	$i++;
  }

  	fclose($handle);
			
	// On déclenche l'enregistrement
	$em->flush(); // à decommenter pour l'insertion en bdd 
}
else
{ $output->writeln('le fichier existe pas ');}
	// On retourne 0 pour dire que la commande s'est bien exécutée
	return 0;
    }
}

?>
